package _4_rpc教程

import (
	"fmt"
	"net"
	"net/rpc"
)

// 定义类对象
type Word struct{}

// 绑定方法类
func (w Word) HelloWord(name string, resp *string) error {
	*resp = name + "你好"
	return nil
}

func main() {
	//1、注册rpc服务对象，给对象绑定方法(1.定义类,2.绑定类方法)
	err := rpc.RegisterName("Hello", new(Word))
	if err != nil {
		fmt.Println("注册rpc服务失败！！！", err)
		return
	}

	//1.1注册rpc服务对象或者使用自定义rpc封装 调用
	//RestService(new(Word))

	//2、创建监听器
	listen, err := net.Listen("tcp", "127.0.0.1:8802")
	if err != nil {
		fmt.Println("创建监听器失败!", err)
		return
	}
	defer listen.Close()

	fmt.Println("开始监听...")

	//3、建立连接
	conn, err := listen.Accept()
	if err != nil {
		fmt.Println("建立连接失败!", err)
		return
	}
	defer conn.Close()
	fmt.Println("连接建立成功...")

	//4、将连接绑定rpc服务
	rpc.ServeConn(conn)
}
